#include <QApplication>
#include <QPushButton>
#include <QMetaMethod>
#include "dlg.h"

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    Dlg obj;
    obj.setProperty("title" , "Hello Qt"); // 设置tite的值
    qDebug() << obj.property("title").toString();  // 输出title的值
    obj.setTitle("Hello World");

    auto metaObj = obj.metaObject(); // 获取元对象
    qDebug() << "Class Name:" << metaObj->className(); // 输出类名

    // 遍历方法
    for (int i = 0 ; i < metaObj->methodCount(); i++)
    {
        QMetaMethod method = metaObj->method(i);
        qDebug() << "Method:" << method.methodSignature();
    }

    // 遍历属性
    for (int i = 0 ; i < metaObj->propertyCount(); i++)
    {
        qDebug() << "Property：" << metaObj->property(i).name();
    }

    // 动态调用方法 , 需注意这种方法只能调用public槽函数

    return QApplication::exec();
}
